
#列表生成式 ,能通过一些算法快速生成一个列表 []
'''
如果列表元素可以按照某种算法推算出来，那我们是否可以在循环的过程中不断推算出后续的元素呢？这样就不必创建完整的list，从而节省大量的空间。在Python中，这种一边循环一边计算的机制，称为生成器（Generator）

创建生成器方法：
1、采用类似于列表生成式的方式，把 [] 换成()
2、使用yield关键字的函数就是一个生成器函数
    yield 第一个功能跟return 一样可以返回一个值
          第二个功能可以将程序挂起（暂停）并且记住这次暂停的位置，下一次我们再next调用的时候，接着执行
    除了next()方法可以呼叫下一个元素，也可以使用send（），
    send()是生成器的方法，所以使用的方式不一样 generator.send()
    send 方法可以在产生下一值的时候给上一个操作传值
    注意第一次使用的时候要传一个None

'''
# lis = (f'第{i}个口罩' for i in range(1,100))
# print (dir(lis))
# print (next (lis))
# print (next (lis))
# print (next (lis))
#
# print(list(lis))

def mask(): #生成器的函数 ，可以返回一个生成器
   for i in range (10000000):

       time = yield f'第{i+1}个口罩'
       print( time)
g = mask()
# for i in range(30):
#     print (next (g))
print (next (g))
# print(g.send(None))
print(g.send('5个小时'))
print(g.send('4个小时'))
print(g.send('15个小时'))
